package com.altekis.kanbankaze.client;

import java.util.List;

import com.altekis.kanbankaze.shared.UserAccount;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The asynchronous counterpart of {@link UserAccountService}.
 * 
 * @author lordkhizir
 * 
 */
public interface UserAccountServiceAsync {

	void createChannelForCurrentUser(AsyncCallback<UserAccount> callback);

	void createLoginURL(String callbackUrl, AsyncCallback<String> callback);

	void createLoginURL(String callbackUrl, String authDomain,
			AsyncCallback<String> callback);

	void createLogoutURL(String callbackUrl, AsyncCallback<String> callback);

	void createLogoutURL(String destinationURL, String authDomain,
			AsyncCallback<String> callback);

	void findAll(AsyncCallback<List<UserAccount>> callback);
	
	void findById(String id, AsyncCallback<UserAccount> callback);

	void getCurrentUser(AsyncCallback<UserAccount> callback);

	void isUserAdmin(AsyncCallback<Boolean> callback);
	
	void isUserLoggedIn(AsyncCallback<Boolean> callback);
	
	void save(UserAccount userAccount, AsyncCallback<UserAccount> callback);
}
